Distributed signal processing systems and methods

ABSTRACT

Systems and methods for parallel and distributed processing of audio signals produced by a microphone array are described. In one aspect, a distributed signal processing system includes an array of microphones and an array of processors. Each processor is connected to one of the microphones and is connected to at least two other processors, enabling communication between adjacent connected processors. The system also includes a computing device connected to each of the processors. Each microphone detects a sound and generates an audio signal, and each processor is configured to receive and process the audio signal sent from a connected microphone and audio signals sent from at least one of the adjacent processors to produce a data stream that is sent to the computing device.

TECHNICAL FIELD

This disclosure relates to processing audio signals generated by microphone arrays.

BACKGROUND

In recent years, theoretical and experimental work in the use of microphone arrays have received increased interest. For example, microphone arrays can be used in audio processing tasks such as denoising and acoustic echo cancellation. While audio processing performance may be improved by increasing the number of microphones, practical uses of large microphone arrays are often limited. For example, technological advancements are enabling the production of large integrated microphone arrays with low cost microphones. However, in general, the overall cost of processing large amounts of audio data generated by microphone arrays can be prohibitively high due to the time expended in transmitting the large number of audio signals to a central location for processing and in the cost of computational resources used to process the audio signals at the central location. Developers and users of microphone arrays continue to seek systems and methods that improve processing audio data generated by microphone arrays.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an example parallel audio signal processing system.

FIG. 2 shows an example Cartesian coordinate axis system.

FIG. 3 shows an example of three adjacent microphones and processors of a microphone/processor array.

FIG. 4A shows an example of audio signals sent to a processor.

FIG. 4B shows an example block circuit diagram representing signal processing operation performed by a processor.

FIG. 5A shows an example plot of nine estimated time delay differences ω_(n)/γ_(n).

FIG. 5B shows an example plot of |ω_(n)|/γ_(n).

FIGS. 6A-6B shows flow diagrams summarizing a first method for computing an approximate coordinate location of a sound source using a one-dimensional microphone/processor array.

FIG. 7A shows an example of audio signals sent to a processor.

FIG. 7B shows an example block circuit diagram representing signal processing operation performed by a processor.

FIG. 8 shows an example plot of nine estimated time delay differences θ_(n)/γ_(n).

FIGS. 9A-9B shows flow diagrams summarizing a second method for computing an approximate coordinate location of a sound source using a one-dimensional microphone/processor array.

FIG. 10 shows a schematic representation of a computing device.

DETAILED DESCRIPTION

This disclosure is directed to systems and methods for parallel and distributed processing of audio signals produced by a microphone array. Systems can be configured to perform in parallel task specific portions of audio signal processing. Examples of systems and methods are described with reference to a particular kind of audio signal processing called “sound source localization.”

The methods are mathematical in nature and, for this reason, are described below with reference to numerous equations and graphical illustrations. Although mathematical expressions alone may be sufficient to fully describe and characterize the methods to those skilled in the art of signal processing, the more graphical circuit diagram approaches included in the following discussion are intended to illustrate a number of different methods so that the methods may be accessible to readers with various backgrounds.

FIG. 1 shows an example parallel audio signal processing system 100. The system 100 includes a one-dimensional array of 12 microphones, such as microphones 102-104; 12 separate processors, such as processors 106-108; and a computing device 110. Each microphone is connected to one of the processors and each processor is connected to adjacent processors, enabling full-bandwidth communication between adjacent processors. The microphones and processors form a one-dimensional microphone/processor array 112. Each processor is also connected to a bus 114 for sending electronic signals to the computing device 110. For example, the microphones 102-104 are connected to the processors 106-108, respectively. The processors 102 and 104 are adjacent, and connected, to the processor 103, as indicated by double-headed arrows 116 and 118, enabling the processor 103 full-bandwidth communication with the processors 102 and 104. The processor 107 sends a data stream of processed audio signals to the computing device 110 via the bus 114.

The audio signal processing system 100 provides a first stage of parallel processing of audio signals generated by each of the microphones at the connected processors. As shown in the example of FIG. 1, consider a sound source 120 that generates sounds represented by wavefronts 122. Each microphone separately detects sounds emanating from the sound source 120 and generates a corresponding electronic analog audio signal that is sent to a connected processor. In the first stage of parallel processing, each processor is configured to process the audio signals sent from a connected microphone and, depending on the type of signal processing task assigned to the processors, may include processing audio signals sent from one or two adjacent processors. Next, each processor outputs a data stream to the computing device 110 for a second stage of processing. In other words, the processors connected to the microphones perform a first state of distributed parallel processing of audio signals generated by the microphones followed by a second stage of centralized processing of the data produced by the processors at the computing device 110. For example, sounds produced by the sound source 120 are converted by the microphone 103 into an analog or digital audio signal that is sent to connected processor 107. The processors 106 and 108 may also send one or both of the audio signals generated by connected microphones 102 and 104 to the processor 103, depending on the type of audio signal processing task to be performed at the processors and by the system 100 as a whole. The processor 103 produces a data stream that is sent to the computing device 110 over the bus 114 for further processing along with the data streams produced by the other processors.

The system 100 can be configured to determine the approximate coordinate location of the sound source 120 located in front of the microphone array. The processors are configured to perform a first stage distributed, parallel signal-processing portion of a sound source localization method. The computing device 110 is then operated to perform a second stage of the sound source localization method by further processing the data generated by the processors, resulting in an approximate coordinate location of the sound source 120.

FIG. 2 shows an example Cartesian coordinate axis system 200 in order to introduce the mathematical notation used to describe the methods and systems for performing sound source localization. The system 200 includes an x-coordinate axis 202 and a y-coordinate axis 204. Regularly spaced marks located along the x-axis 202 represent the coordinate locations of regularly spaced microphones of a one-dimensional microphone array. In the example of FIG. 2, a single sound source 208 has coordinate location (x_(s),y_(s)) and generates an analog audio signal {tilde over (s)}(t), where t is time. For example, the coordinate location of a microphone number n 206 is (nh,0), where h represents the distance between microphones, and the analog audio signal detected by the microphone n is represented by

{tilde over (r)} _(n)(t)={tilde over (s)}(t−Δ _(n))  Eq. (1)

where

Δ_(n)=√{square root over ((nh−x _(s))² +y _(s) ²)}/c  Eq. (2)

represents the sound propagation delay 210 and c represents the speed of sound.

The notation of Equations (1) and (2) can be simplified using the following change of variables:

$\begin{matrix} {{\tau = \frac{ct}{h}},} & {{Eq}.\mspace{14mu} \left( {3a} \right)} \\ {{\delta_{n} = \frac{c\; \Delta_{n}}{h}},} & {{Eq}.\mspace{14mu} \left( {3b} \right)} \\ {{u = \frac{x_{s}}{h}},{and}} & {{Eq}.\mspace{14mu} \left( {3c} \right)} \\ {v = \frac{y_{s}}{h}} & {{Eq}.\mspace{14mu} \left( {3d} \right)} \end{matrix}$

where τ=1 is the time it takes for sound to travel the distance h between adjacent microphones. As a result, the audio signal generated by the sound source 208 is represented by

s(τ)={tilde over (s)}(hτ/c)  Eq. (4a)

and the analog audio signal detected by a microphone n is represented by

r _(n)(τ)={tilde over (r)} _(n)(hτ/c)  Eq. (4b)

Using the simplified notation, the analog audio signal detected by the microphone n can also be represented by

r _(n)(τ)=s(τ−δ _(n))  Eq. (5)

where the time delay 210 is now represented by

δ_(n)=√{square root over ((n−u)² +v ²)}  Eq. (6)

An approximate coordinate location of the sound source 208 using a one-dimensional microphone/processor array can be determined in a number of different ways. The first stage of determining the approximate coordinate location of the sound source 208 is to determine an estimated time delay difference between certain pairs of microphones. These time delay differences are computed in parallel at each of the processors of the microphone/processor array. In the second stage, the time delay differences are then sent to the computing device, which uses the time delay differences to determine the approximate coordinate location of the sound source 208.

FIG. 3 shows an example of three adjacent microphones and processors identified as n−1, n, and n+1 of a large microphone/processor array. In one example now described, the time delay difference between the two microphones n−1 and n+1 is (δ_(n+1)−δ_(n−1)), an estimate of which is determined by the processor n using the measured audio signals r_(n−1)(τ), r_(n)(τ), and r_(n+1)(τ) detected by corresponding microphones n−1, n, and n+1. The processors n−1, n, and n+1 receive the audio signals r_(n−1)(τ), r_(n)(τ), and r_(n+1)(τ) from the microphones n−1, n, and n+1, respectively. The processor n then receives the audio signal r_(n−1)(τ) from the adjacent microphone n−1 and receives the audio signal r_(n+1)(τ) from the adjacent microphone n+1. The processor n processes the audio signals r_(n−1)(τ), r_(n)(τ), and r_(n+1)(τ) and outputs an estimate of (δ_(n+1)−δ_(n−1)) in a data stream to the computing device (not shown). The processors n−1 and n+1 also perform the same signal processing operations as processor n but with audio signals captured by connected microphones and audio signals received from adjacent processors. The estimated time delay differences are computed in parallel and sent to the computing device to determine an approximate coordinate location (û,{circumflex over (v)}) (i.e., (x_(s),y_(s))≈(hû,h{circumflex over (v)})) of the sound source 208.

The signal processing operations performed by each processor of a microphone/processor array is now described for a first system and method of determining an approximate coordinate location of the sound source 208. In the first stage of determining the approximate coordinate location of the sound source 208, each processor n is configured to determine an estimate of the time delay difference (δ_(n+1)−δ_(n−1)) between the microphones n−1 and n+1, which is given by:

$\begin{matrix} {{\frac{\omega_{n}}{\gamma_{n}} = {\left( {\delta_{n + 1} - \delta_{n - 1}} \right) + ɛ_{n}}}{where}} & {{Eq}.\mspace{14mu} (7)} \\ {{\omega_{n} = {\int_{0}^{T}{{\psi (\tau)}{{r_{n}^{\prime}(\tau)}\left\lbrack {{r_{n - 1}(\tau)} - {r_{n + 1}(\tau)}} \right\rbrack}\ {\tau}}}},\; {and}} & {{Eq}.\mspace{14mu} (8)} \\ {\gamma_{n} = {\int_{0}^{T}{{{\psi (\tau)}\left\lbrack {r^{\prime}(\tau)}_{n} \right\rbrack}^{2}\ {\tau}}}} & {{Eq}.\mspace{14mu} (9)} \end{matrix}$

is a normalizing factor. The function ψ(τ) is a window function with the property that ψ(τ)>0 for τε(0,T), where T is a selected period of time, and ε_(n) is the approximate error given by

$\begin{matrix} {{ɛ_{n}\gamma_{n}} = {\sum\limits_{k = 2}^{\infty}{\frac{\left( {\delta_{n} - \delta_{n - 1}} \right)^{2} - \left( {\delta_{n} - \delta_{n + 1}} \right)^{2}}{k!} \times {\int_{0}^{T}{{\psi (\tau)}{s^{(1)}\left( {\tau - \delta_{n}} \right)}{s^{(k)}\ \left( {\tau - \delta_{n}} \right)}{\tau}}}}}} & {{Eq}.\mspace{14mu} (10)} \end{matrix}$

Equations (7)-(9) are obtained by assuming the time delay difference is small as explained below in APPENDIX I.

FIG. 4A shows an example of audio signals sent to the processor n that outputs ω_(n) and γ_(n) (i.e., ω_(n)/γ_(n)≈(δ_(n−1)−δ_(n+1))). As show in FIG. 4A, the processors n−1, n, and n+1 receive the audio signals r_(n−1)(τ), r_(n)(τ), and R_(n+1)(τ) from the microphones n−1, n, and n+1, respectively. The processor n then receives the audio signal r_(n−1)(τ) from the adjacent processor n−1 and receives the audio signal r_(n+1)(τ) from the adjacent processor n+1. FIG. 4B shows an example block circuit diagram 400 representing the signal processing operation performed by the processor n on the audio signals r_(n−1)(τ), r_(n)(τ), and r_(n+1)(τ). As shown in FIG. 4B, the audio signal r_(n)(τ) produced by the microphone n is input to a derivate generating element 402, which outputs the derivative r_(n)′(τ). The audio signals produced by the processors n−1 and n+1 are input to a summing junction 404, which outputs audio signal difference r_(n−1)(τ)−r_(n+1)(τ). The derivative r_(n)′(τ) is squared at product junction 406 to produce [r_(n)′(τ)]², which, in turn, is input to integrating element 408 producing normalizing factor γ_(n). Circuit diagram 400 also reveals that the derivative r_(n)′(τ) is multiplied by the difference r_(n−1)(τ)−r_(n+1)(τ) at product junction 410 to produce r_(n)′(τ) [r_(n−1)(τ)−r_(n+1)(τ)], which, in turn, is input to integrating element 412 producing ω_(n). The processor n then computes and outputs ω_(n) and γ_(n), as shown in FIG. 4A.

The processors of a microphone/processor array compute, in parallel, (ω₁,γ₁), . . . , (ω_(n),γ_(n)), . . . , which are used to compute approximate time delay differences at the computing device. Next, the values ω_(n) and γ_(n) output from each processor are sent to a computing device to determine an approximate sound source location (û,{circumflex over (v)}). A derivation of the equations used to determine (û,{circumflex over (v)}) for the first example is now described. The estimated time delay differences ω_(n)/γ_(n) are linearly distributed enabling the approximate sound source location (û,{circumflex over (v)}) to be determined by solving a linear model of the form

$\begin{matrix} {\frac{\omega_{n}}{\gamma_{n}} \approx {{\hat{a}\left( {n - q} \right)} + \hat{b}}} & {{Eq}.\mspace{14mu} (11)} \end{matrix}$

where n=q−R, q−R+1, . . . , q+R−1, and q+R and

${q = {\underset{n}{\arg \; \min}\left( {{\omega_{n}}/\gamma_{n}} \right)}},$

using linear regression. The minimum time delay difference |ω_(q)|/γ_(q) occurs at n=q, where R is an integer selected to define a neighborhood surrounding q.

FIG. 5A shows an example plot of nine estimated time delay differences ω_(n)/γ_(n) along a portion of the x-axis 202. Each point along the x-axis 202 represents a microphone in the microphone/processor array. The linear model 502 representing nine linearly distributed time delay differences is plotted for R=4. FIG. 5B shows an example plot of |ω_(n)|/γ_(n) for the same values of n along the same portion of the x-axis 202, shown in FIG. 5A. As shown in FIG. 5B, the minimum time delay difference |ω_(q)|/γ_(q) is represented by point 502 occurring at n=q.

Only the values of |ω_(n)|/γ_(n) for n=q−R, q−R+1, . . . q+R−1, and q+R are used in applying linear regression to solve for the parameters â and {circumflex over (b)} in Equation (11), which are given by

$\begin{matrix} {{\hat{a} = {\frac{3}{{R\left( {R + 1} \right)}\left( {{2\; R} + 1} \right)}{\sum\limits_{n = {q - R}}^{q + R}{\left( {n - q} \right){\omega_{n}/\gamma_{n}}}}}},{and}} & {{Eq}.\mspace{14mu} \left( {12a} \right)} \\ {\hat{b} = {\frac{1}{{2\; R} + 1}{\sum\limits_{n = {q - R}}^{q + R}{\omega_{n}/\gamma_{n}}}}} & {{Eq}.\mspace{14mu} \left( {12b} \right)} \end{matrix}$

The parameters â and {circumflex over (b)} can be used to determine the approximate sound source location (û,{circumflex over (v)}) by setting Equation (11) equal to Equation (7) as follows:

(δ_(n+1)−δ_(n−1))≈â(n−q)+{circumflex over (b)}  Eq. (13)

The time delay difference (δ_(n+1)−δ_(n−1)) can also be written as a function of the sound source location coordinates u and v by expanding (δ_(n+1)−δ_(n−1)) in a Taylor series to obtain

$\begin{matrix} {\left( {\delta_{n + 1} - \delta_{n - 1}} \right) \approx {\frac{n - u}{v}\left\lbrack {2 - \frac{\left( {n - u} \right)^{2} + 1}{v^{2}}} \right\rbrack}} & {{Eq}.\mspace{14mu} (14)} \end{matrix}$

the derivation of which is presented below in APPENDIX II. Solving Equations (14) and (15) for u and v gives the approximate source location coordinates:

û=q−{circumflex over (b)}/â  Eq. (15a)

{circumflex over (v)}=2/â  Eq. (15b)

Coordinates for the sound source location 208, shown in FIG. 2, are given by

(x _(s) ,y _(s))≈(hû,h{circumflex over (v)})  Eq. (16)

FIG. 6A shows a flow diagram summarizing a method for computing an approximate coordinate location of a sound source using a one-dimensional microphone/processor array. In stage 601, each microphone of a microphone array captures and transmits an audio signal r_(n)(τ) to a connected processor, as described above with reference to FIG. 2. In stage 602, the processors are launched so that the processors of the microphone/processor array in parallel compute ω_(n)'s and γ_(n)'s and send the ω_(n)'s and γ_(n)'s to a computing device for processing, as described in the flow diagram shown in FIG. 6B. In stage 603, the computing device receives the ω_(n)'s and γ_(n)'s from the processors of the microphone/processor array, as described above with reference to FIG. 2. In stage 604,

$q = {\underset{n}{\arg \; \min}\left( {{\omega_{n}}/\gamma_{n}} \right)}$

is determined, as described above with reference to FIGS. 5A-5B. In stage 605, the linear regression parameters â and {circumflex over (b)} are computed in accordance with Equations (12a) and (12b), respectively. In stage 606, approximate source location coordinates û and {circumflex over (v)} are computed in accordance with Equations (15a) and (15b), respectively. In stage 607, the sound source location coordinates are output.

FIG. 6B shows a flow diagram summarizing a method for computing ω_(n) and γ_(n) at each processor launched in stage 602 of the method shown in FIG. 6A. In stage 611, a processor connected to a microphone receives the audio signal r_(n)(τ) from the connected microphone and receives the audio signal r_(n−1)(τ) from adjacent processor n−1 and receives the audio signal r_(n+1)(τ) from adjacent processor n+1, as described above with reference to FIG. 4A. In stage 612, the processor computes the normalizing factor γ_(n), as described above with references to Equation (9) and FIG. 4B. In stage 613, the processor computes ω_(n), as described above with reference to Equation (8) and FIG. 4B. In stage 614, ω_(n) and γ_(n) are sent to the computing device for processing.

In alternative examples, the signal processing operations performed by each processor of a microphone/processor array is now described for a second system and method of determining an approximate coordinate location of the sound source 208. In the first stage of determining the approximate coordinate location of the sound source 208, each processor n is also configured to determine an estimate of the squared time delay difference (δ_(n+1)−δ_(n−1))² between the microphones n−1 and n+1 located adjacent to the microphone n and is given by:

$\begin{matrix} {{\frac{\theta_{n}}{\gamma_{n}} = {\left( {\delta_{n + 1} - \delta_{n - 1}} \right)^{2} + ɛ_{n}}}{where}} & {{Eq}.\mspace{14mu} (17)} \\ {\theta_{n} = {\int_{0}^{T}{{{{\psi (\tau)}\left\lbrack {{r_{n - 1}(\tau)} - {r_{n + 1}(\tau)}} \right\rbrack}\ }^{2}{\tau}}}} & {{Eq}.\mspace{14mu} (18)} \end{matrix}$

Like Equations (7)-(9), Equations (17)-(18) are also obtained by assuming the time delay difference is small as explained below in APPENDIX I.

FIG. 7A shows an example of audio signals sent to the processor 17 that outputs θ_(n) and γ_(n) (i.e., θ_(n)/γ_(n)≈(δ_(n−1)−δ_(n+1))²). As show in FIG. 7A, the processors n−1, n, and n+1 receive the audio signals r_(n−1)(τ), r_(n)(τ), and r_(n+1)(τ) from the microphones n−1, n, and n+1, respectively. The processor 17 then receives the audio signal r_(n−1)(τ) from the adjacent processor n−1 and receives the audio signal r_(n+1)(τ) from the adjacent processor n+1. FIG. 7B shows an example of a block circuit diagram 700 representing the signal processing operations performed by the processor n on the audio signals r_(n−1)(τ), r_(n)(τ), and r_(n+1)(τ). As shown in FIG. 7B, and as described above with reference to FIG. 4B, the audio signal r_(n)(τ) produced by the microphone n is input to a derivate generating element 702, which outputs the derivative r_(n)′(τ) squared at product junction 704 to produce [r_(n)′(τ)]², which, in turn, is input to integrating element 706 producing normalizing factor γ_(n). The audio signals produced by the processors n−1 and n+1 are input to a summing junction 708, which outputs audio signal difference r_(n+1)(τ)−r_(n−1)(τ). The audio signal difference r_(n+1)(τ)−r_(n−1)(τ) is squared at product junction 710 to produce [r_(n+1)(τ)−r_(n−1)(τ)]², which, in turn, is input to integrating element 712 producing θ_(n). The processor n then outputs θ_(n) and γ_(n), as shown in FIG. 7A.

Next, the values θ_(n) and γ_(n) output from each processor are sent to a computing device to determine an approximate sound source location (û,{circumflex over (v)}). A derivation for the equations used to determine (û,{circumflex over (v)}) for the second system and method is now described. The estimated squared time delay differences θ_(n)/γ_(n) have a parabolic distribution. The parabolic distribution of the squared time delay differences θ_(n)/γ_(n) enables the approximate sound source location (û,{circumflex over (v)}) to be determined by solving a quadratic model of the form

$\begin{matrix} {\frac{\theta_{n}}{\gamma_{n}} \approx {{{\hat{a}}^{\prime}\left( {n - q} \right)}^{2} + {{\hat{b}}^{\prime}\left( {n - q} \right)} + {\hat{c}}^{\prime}}} & {{Eq}.\mspace{14mu} (19)} \end{matrix}$

where n=q−R, q−R+1, . . . , q+R−1, and q+R and

${q = {\underset{n}{\arg \; \min}\left( {\theta_{n}/\gamma_{n}} \right)}},$

using regression. In other words, finding the solution that minimizes the sum of squared errors (difference between model's and measured values) using standard techniques. As described above for |ω_(n)|/γ_(n), the minimum squared time delay difference θ_(n)/γ_(n) occurs at n=q, where R is an integer selected to define a neighborhood surrounding q.

FIG. 8 shows an example plot of nine estimated squared time delay differences θ_(n)/γ_(n) along a portion of the x-axis 202. Each point along the x-axis 202 represents a microphone in a microphone/processor array. The quadratic model 802 representing the distribution of nine squared time delay differences is plotted for R=4. As shown in FIG. 8, the minimum time delay difference is θ_(q)/γ_(q) is represented by a point 804 occurring at n=q.

Only the values of θ_(n)/γ_(n) for n=q−R, q−R+1, . . . , q+R−1, and q+R are used in applying regression to solve for the parameters â′ and {circumflex over (b)}′ in Equation (19), which are given by the solution of this system of equations

${{P_{1}{\hat{a}}^{\prime}} + {P_{2}{\hat{c}}^{\prime}}} = {\sum\limits_{n = {q - R}}^{q + R}{\left( {n - q} \right)^{2}{\theta_{n}/\gamma_{n}}}}$ ${P_{2}{\hat{b}}^{\prime}} = {\sum\limits_{n = {q - R}}^{q + R}{\left( {n - q} \right){\theta_{n}/\gamma_{n}}}}$ ${{P_{2}{\hat{a}}^{\prime}} + {P_{3}{\hat{c}}^{\prime}}} = {\sum\limits_{n = {q - R}}^{q + R}{\theta_{n}/\gamma_{n}}}$ where P₁ = 2 R⁵/5 + R⁴ + 2 R³/3 − R/30 P₂ = 2 R³/3 + R² + R/3 P₃ = 2 R + 1

Solving this system of equations gives the parameters â′, {circumflex over (b)}′ and ĉ′, which can be used to determine the approximate sound source location (û,{circumflex over (v)}) by setting Equation (19) equal to Equation (17) as follows:

(δ_(n+1)−δ_(n−1))≈{circumflex over (a)}′(n−q)²+{circumflex over (b)}′(n−q)+{circumflex over (c)}′  Eq. (21)

The time delay difference (δ_(n+1)−δ_(n−1))² can also be written as a function of the sound source location coordinates u and v by expanding (δ_(n+1)−δ_(n−1)) as described above with reference to Equation (14). Solving Equations (14) and (21) for u and v gives the approximate source location coordinates:

û′=q−{circumflex over (b)}′(2â′)  Eq. (22a)

{circumflex over (v)}′=2/√{square root over ({circumflex over (a′)}  Eq. (22b)

Coordinates for the sound source location 208, shown in FIG. 2, are given by

(x _(s) ,y _(s))≈(hû′,h{circumflex over (v)}′)  Eq. (23)

FIG. 9A shows a flow diagram summarizing a method for computing an approximate coordinate location of a sound source using a one-dimensional microphone/processor array. In stage 901, each microphone of a microphone array captures and transmits an audio signal r_(n)(τ) to a connected processor, as described above with reference to FIG. 2. In stage 902, the processors are launched so that the processors of the microphone/processor array in parallel compute θ_(n)'s and γ_(n)'s and send the θ_(n)'s and γ_(n)'s to a computing device for processing, as described in the flow diagram shown in FIG. 9B. In stage 903, the computing device receives the θ_(n)'s and γ_(n)'s from the processors of the microphone/processor array, as described above with reference to FIG. 2. In stage 904,

$q = {\underset{n}{\arg \; \min}\left( {\theta_{n}/\gamma_{n}} \right)}$

is determined, as described above with reference to FIG. 8. In stage 905, regression parameters â′ and {circumflex over (b)}′ are computed in accordance with Equations (20a) and (20b), respectively. In stage 906, approximate source location coordinates û′ and {circumflex over (v)}′ are computed in accordance with Equations (22a) and (22b), respectively. In stage 907, the sound source location coordinates are output.

FIG. 9B shows a flow diagram summarizing a method for computing θ_(n) and γ_(n) at each processor launched in stage 902 of the method shown in FIG. 9A. In stage 911, a processor connected to a microphone receives the audio signal r_(n)(τ) from the connected microphone and receives the audio signal r_(n−1)(τ) from adjacent processor n−1 and receives the audio signal r_(n+1)(τ) from adjacent processor n+1, as described above with reference to FIG. 7A. In stage 912, the processor computes normalizing factor γ_(n), as described above with references to Equation (9) and FIG. 7B. In stage 913, the processor computes θ_(n), as described above with reference to Equation (18) and FIG. 7B. In stage 914, θ_(n) and γ_(n) are sent to the computing device for processing.

Methods are not limited to computing ω_(n), θ_(n), and γ_(n) at the processor n based on the time delay difference (δ_(n+1)−δ_(n−1)). In alternative examples, the time delay difference (δ_(n)−δ_(n−1)) can be used to compute ω_(n), θ_(n), and γ_(n). Thus, the linear model is given by

$\begin{matrix} {{\frac{\omega_{n}}{\gamma_{n}} = {\left( {\delta_{n} - \delta_{n - 1}} \right) + ɛ_{n}}}{where}} & {{Eq}.\mspace{14mu} (24)} \\ {\omega_{n} = {\int_{0}^{T}{{\psi (\tau)}{{r_{n}^{\prime}(\tau)}\left\lbrack {{r_{n - 1}(\tau)} - {r_{n}(\tau)}} \right\rbrack}\ {\tau}}}} & {{Eq}.\mspace{14mu} (25)} \end{matrix}$

And the quadratic model is given by

$\begin{matrix} {{\frac{\theta_{n}}{\gamma_{n}} = {\left( {\delta_{n} - \delta_{n - 1}} \right)^{2} + ɛ_{n}}}{where}} & {{Eq}.\mspace{14mu} (26)} \\ {{\theta_{n} = {\int_{0}^{T}{{{\psi (\tau)}\left\lbrack {{r_{n - 1}(\tau)} - {r_{n}(\tau)}} \right\rbrack}^{2}\ {\tau}}}},} & {{Eq}.\mspace{14mu} (27)} \end{matrix}$

and

In still other examples, the time delay different (δ_(n+1)−δ_(n)) can be used to compute ω_(n), θ_(n), and γ_(n). Thus, the linear model is given by

$\begin{matrix} {{\frac{\omega_{n}}{\gamma_{n}} = {\left( {\delta_{n + 1} - \delta_{n}} \right) + ɛ_{n}}}{where}} & {{Eq}.\mspace{14mu} (28)} \\ {\omega_{n} = {\int_{0}^{T}{{\psi (\tau)}{{r_{n}^{\prime}(\tau)}\left\lbrack {{r_{n}(\tau)} - {r_{n + 1}(\tau)}} \right\rbrack}\ {\tau}}}} & {{Eq}.\mspace{14mu} (29)} \end{matrix}$

And the quadratic model is given by

$\begin{matrix} {{\frac{\theta_{n}}{\gamma_{n}} = {\left( {\delta_{n + 1} - \delta_{n}} \right)^{2} + ɛ_{n}}}{where}} & {{Eq}.\mspace{14mu} (30)} \\ {\theta_{n} = {\int_{0}^{T}{{{\psi (\tau)}\left\lbrack {{r_{n}(\tau)} - {r_{n + 1}(\tau)}} \right\rbrack}^{2}\ {\tau}}}} & {{Eq}.\mspace{14mu} (31)} \end{matrix}$

The linear and quadratic models for computing ω_(n), θ_(n), and γ_(n) assume that all of the microphones of a microphone/processor array are calibrated, so that computing ω_(n) and θ_(n) based on the audio signal differences r_(n−1)(τ)−r_(n+1)(τ), r_(n−1)(τ)−r_(n)(τ), or r_(n)(τ)−r_(n+1)(τ) are unbiased. Methods include another approach in which the audio signals are quantized to one bit that represents an audio signal's polarity or sign. The audio signals can be quantized in a processed represented mathematically by a sign function

${\Pi (x)} = \left\{ \begin{matrix} {{+ 1},{x \geq 0}} \\ {{- 1},{x < 0}} \end{matrix} \right.$

Instead of using Equation (8), the linear model is based on

Ω_(n) = (δ_(n + 1) − δ_(n − 1)) + ɛ_(n) where $\Omega_{n} = {\frac{1}{T}{\int_{0}^{T}{{{\Pi \left( {r_{n}^{\prime}(\tau)} \right)}\left\lbrack {{\Pi \left( {r_{n - 1}(\tau)} \right)} - {\Pi \left( {r_{n + 1}(\tau)} \right)}} \right\rbrack}\ {\tau}}}}$

And the quadratic model is based on

Θ_(n) = (δ_(n + 1) − δ_(n − 1))² + ɛ_(n) where $\Theta_{n} = {\frac{1}{T}{\int_{0}^{T}{\left\lbrack {{\Pi \left( {r_{n - 1}(\tau)} \right)} - {\Pi \left( {r_{n + 1}(\tau)} \right)}} \right\rbrack^{2}\ {\tau}}}}$

Methods of computing the sound source coordinates (x_(s),y_(s)) based on the linear and quadratic models are described above with reference to a computing device. The computing device can be a desktop computer, a laptop, or any other suitable device configured to carry out processing and data storage. FIG. 10 shows a schematic representation of a computing device 1000. The device 1000 includes one or more processors 1002, such as a central processing unit; one or more network interfaces 1004, such as a Local Area Network LAN, a wireless 802.11x LAN, a 3G or 4G mobile WAN or a WiMax WAN; a microphone/processor interface 1006; and one or more computer-readable mediums 1008. Each of these components is operatively coupled to one or more buses 1010. For example, the bus 1010 can be an EISA, a PCI, a USB, a FireWire, a NuBus, or a PDS.

The computer readable medium 1008 can be any suitable medium that participates in providing instructions to the processor 1002 for execution. For example, the computer readable medium 1008 can be non-volatile media, such as firmware, an optical disk, a magnetic disk, or a magnetic disk drive; volatile media, such as memory; and transmission media, such as coaxial cables, copper wire, and fiber optics. The computer readable medium 1008 can also store other software applications, including word processors, browsers, email, Instant Messaging, media players, and telephony software.

The computer-readable medium 1008 may also store an operating system 1012, such as Mac OS, MS Windows, Unix, or Linux; network applications 1014; and a audio signal processing application 1016. The operating system 1014 can be multi-user, multiprocessing, multitasking, multithreading, real-time and the like. The operating system 1012 can also perform basic tasks such as recognizing input from input devices, such as a keyboard, a keypad, or a mouse; sending output to a projector and a camera; keeping track of files and directories on medium 1008; controlling peripheral devices, such as disk drives, printers, image capture device; and managing traffic on the one or more buses 1010. The network applications 1014 include various components for establishing and maintaining network connections, such as software for implementing communication protocols including TCP/IP, HTTP, Ethernet, USB, and Firewire.

The audio signal processing application 1016 provides various software components for computing approximate sound source coordinates (x_(s),y_(s)) based on the linear and quadratic models for computing ω_(n), θ_(n), and γ_(n). In certain examples, some or all of the processes performed by the application 1016 can be integrated into the operating system 1012. In certain examples, the processes of the application may also at least partially be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in any combination thereof.

APPENDIX I

Equations (7)-(9), (17), and (18) are determined by assuming the analog audio signal s(τ) representing the sound generated by the sound source 208, shown in FIG. 2, is a continuous analytic function. Using s^((k))(τ) to represent the functions k^(th) derivative (e.g., s′(τ)=s^((l))(τ)), the signal differences measured by two microphones in the one-dimensional array of microphones can be expanded in a Taylor series as follows:

$\begin{matrix} {{{r_{m}(\tau)} - {r_{n}(\tau)}} = {{s\left( {\tau - \delta_{m}} \right)} - {s\left( {\tau - \delta_{n}} \right)}}} \\ {= {{{s^{\prime}\left( {\tau - \delta_{n}} \right)}\left( {\delta_{n} - \delta_{m}} \right)} +}} \\ {{\sum\limits_{k = 2}^{\infty}{{s^{(k)}\left( {\tau - \delta_{n}} \right)}\frac{\left( {\delta_{n} - \delta_{m}} \right)^{k}}{k!}}}} \end{matrix}$

When the difference between time delays is small (i.e., |δ_(n)−δ_(m)|<<1), this Taylor series is dominated by the first term. Thus, an estimate of the time delay difference (δ_(n+1)−δ_(n−1)) between the microphones n−1 and n+1 adjacent to a microphone n can be approximated by Equations (7)-(9), or the squared time delay difference (δ_(n+1)−δ_(n−1))² between the microphones n−1 and n+1 adjacent to a microphone n can be approximated by Equations (17)-(18).

APPENDIX II

The methods are predicated on the microphone separation distance h being small enough that the time delay differences between adjacent microphones is very small. As a result, Equation (6) can be rewritten as

$\delta_{n} = {v\sqrt{1 + \left( \frac{n - u}{v} \right)^{2}}}$

and expanded in a Taylor series to obtain

$\delta_{n} = {v + {\frac{v}{2}\left\lbrack \frac{n - u}{v} \right\rbrack}^{2} - {\frac{v}{8}\left\lbrack \frac{n - u}{v} \right\rbrack}^{4} + {\frac{v}{16}\left\lbrack \frac{n - u}{v} \right\rbrack}^{6} - \ldots}$

Keeping only the first two terms, by assuming |n−u|<v, results in

${\delta_{n + 1} - \delta_{n - 1}} \approx {\frac{n - u}{v}\left\lbrack {2 - \frac{\left( {n - u} \right)^{2} + 1}{v^{2}}} \right\rbrack}$

The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the disclosure. However, it will be apparent to one skilled in the art that the specific details are not required in order to practice the systems and methods described herein. The foregoing descriptions of specific embodiments are presented for purposes of illustration and description. They are not intended to be exhaustive of or to limit this disclosure to the precise forms described. Obviously, many modifications and variations are possible in view of the above teachings. The embodiments are shown and described in order to best explain the principles of this disclosure and practical applications, to thereby enable others skilled in the art to best utilize this disclosure and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of this disclosure be defined by the following claims and their equivalents: 

1. A sound source localization method comprising: providing an array of microphones and an array of processors, wherein each processor is connected to one microphone and is connected to at least one adjacent processor; at each microphone and connected processor, converting a sound detected by each microphone into an audio signal, the sound generated by a sound source located in front of the microphone array, receiving the audio signal from the microphone and audio signals from at least one of the adjacent processors, determining the time delay difference between two microphones, and sending the time delay difference to a connected computing device; and computing an approximate coordinate location of the sound source at the computing device based on the time delay differences sent from the array of processors.
 2. The method of claim 1, wherein receiving the audio signals from at least one of the adjacent processors further comprises the at least one adjacent processors receiving the audio signals from connected microphones.
 3. The method of claim 1, wherein determining the time delay difference between two microphones further comprises computing a linear time delay difference.
 4. The method of claim 3, wherein the linear time delay difference further comprises $\frac{\omega_{n}}{\gamma_{n}}$ where ω_(n) = ∫₀^(T)ψ(τ)r_(n)^(′)(τ)F(τ) τ, and γ_(n) = ∫₀^(T)ψ(τ)[r^(′)(τ)_(n)]² τ ψ(τ) is a window function with the property that ψ(τ)>0 for τε(0,T), T is a selected period of time, and r_(n)(τ) is the analog audio signal detected by the microphone connected to the processor.
 5. The method of claim 4, wherein F(τ) further comprises one of r_(n−1)(τ)−r_(n+1)(τ), r_(n)(τ)−r_(n+1)(τ), and r_(n−1)(τ)−r_(n)(τ), where r_(n−1)(τ) is the audio signal sent from a first adjacent microphone to the microphone and r_(n+1)(τ) is the audio signal sent from a second adjacent microphone.
 6. The method of claim 3, wherein the linear time delay difference further comprises computing $\Omega_{n} = {\frac{1}{T}{\int_{0}^{T}{{{\Pi \left( {r_{n}^{\prime}(\tau)} \right)}\left\lbrack {{\Pi \left( {r_{n - 1}(\tau)} \right)} - {\Pi \left( {r_{n + 1}(\tau)} \right)}} \right\rbrack}\ {\tau}}}}$ associated with a linear time delay difference model, where Π(·) is a sign function, r_(n)(τ) is the analog audio signal detected by the microphone connected to the processor, r_(n−1)(τ) is the audio signal sent from a first adjacent microphone to the microphone, and r_(n+1)(τ) is the audio signal sent from a second adjacent microphone.
 7. The method of claim 1, wherein computing an approximate coordinate location of the sound source further comprises computing û=q−{circumflex over (b)}/â and {circumflex over (v)}=2/â where (hû,h{circumflex over (v)}) are the approximate coordinates of the sound source, h is the distance between microphones, and the parameters â and {circumflex over (b)} of a linear model representing the distribution of the time delay differences output from the processors.
 8. The method of claim 1, wherein determining the time delay difference between two microphones further comprises computing a quadratic time delay difference.
 9. The method of claim 8, wherein computing the quadratic time delay difference further comprises $\frac{\theta_{n}}{\gamma_{n}}$ where θ_(n) = ∫₀^(T)ψ(τ)G(τ) τ, andγ_(n) = ∫₀^(T)ψ(τ)[r^(′)(τ)_(n)]² τ associated with a linear time delay difference distribution, where ψ(τ) is a window function with the property that ψ(τ)>0 for τε(0,T), T is a selected period of time, and r_(n)(τ) is the analog audio signal detected by the microphone connected to the processor.
 10. The method of claim 9, wherein G(τ) further comprises one of [r_(n−1)(τ)−r_(n+1)(τ)]², [r_(n)(τ)−r_(n+1)(τ)]², and [r_(n−1)(τ)−r_(n)(τ)]², where r_(n−1)(τ) is the audio signal sent from a first adjacent microphone to the microphone and r_(n+1)(τ) is the audio signal sent from a second adjacent microphone.
 11. The method of claim 8, wherein computing the quadratic time delay difference further comprises computing $\Theta_{n} = {\frac{1}{T}{\int_{0}^{T}{\left\lbrack {{\Pi \left( {r_{n - 1}(\tau)} \right)} - {\Pi \left( {r_{n + 1}(\tau)} \right)}} \right\rbrack^{2}\ {\tau}}}}$ associated with a linear time delay difference model, where Π(·) is a sign function, r_(n)(τ) is the analog audio signal detected by the microphone connected to the processor, r_(n−1)(τ) is the audio signal sent from a first adjacent microphone to the microphone, and r_(n+1)(τ) is the audio signal sent from a second adjacent microphone.
 12. The method of claim 1, wherein computing an approximate coordinate location of the sound source further comprises computing û′=q−{circumflex over (b)}′/(2â′) and {circumflex over (v)}′/√{square root over (â′)} where (hû′,h{circumflex over (v)}′) are the approximate coordinates of the sound source, h is the distance between microphones, and the parameters â′ and {circumflex over (b)}′ of a quadratic model representing the distribution of the time delay differences output from the processors.
 13. The method of claim 1, wherein the converting, receiving, determining, and sending operations are performed by the microphones and processors in parallel.
 14. A distributed signal processing system comprising: an array of microphones, each microphone detects a sound and generates an audio signal; an array of processors, wherein each processor is connected to one of the microphones and is connected to at least two other processors, enabling communication between adjacent connected processors; and a computing device connected to each of the processors, wherein each processor is configured to receive and process the audio signals sent from a connected microphone and audio signals sent from at least one of the adjacent processors to produce a data stream that is sent to the computing device.
 15. The system of claim 14, wherein the array of processors are configured to compute a first stage of audio signal processing in parallel.
 16. The system of claim 14, wherein the computing device performs a second stage of audio signal processing based on the data streams received from the array of processors.
 17. The system of claim 14, wherein each processor is configured to compute a linear time delay difference between sounds detected at two microphones.
 18. The system of claim 14, wherein each processor is configured to compute a quadratic time delay difference between sounds detected at two microphones.
 19. The system of claim 14, wherein the computing device connected to each of the processors further comprises a bus connected to the computing device and the processors, the bus configured to receive the data streams generated by the processors and transmit the data streams to the computing device.
 20. The system of claim 14, wherein enabling communication between adjacent connected processors further comprises adjacent processors are configured to exchange audio signals. 